/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.gov.cemaden.library.dao.smp;

import br.gov.cemaden.library.dao.GenericDao;
import br.gov.cemaden.library.interfaces.smp.ElementosExcluidosInterface;
import br.gov.cemaden.library.model.smp.ElementosExcluidos;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 *
 * @author Simone Santos
 */
public class ElementosExcluidosDao extends GenericDao implements ElementosExcluidosInterface{

    private Session session;

    public ElementosExcluidosDao(Session session) {
        this.session = session;
    }

    public List<ElementosExcluidos> findAll() {
        //Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tx = session.beginTransaction();
        List<ElementosExcluidos> elementos = null;
        try {
            Query query = session.getNamedQuery("ElementosExcluidos.findAll");
            elementos = (List<ElementosExcluidos>) query.list();
            tx.commit();
        } catch (HibernateException e) {
            tx.rollback();
            System.out.println("Erro no ElementosExcluidosFacade.findAll: " + e.getMessage() + " - Causa: " + e.getCause());
            throw new HibernateException(e);
        }
        return elementos;
    }

    public ElementosExcluidos findById(Long id) {
        //Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tx = session.beginTransaction();
        ElementosExcluidos elemento = null;
        try {
            Query query = session.getNamedQuery("ElementosExcluidos.findById").setParameter("id", id);
            elemento = (ElementosExcluidos) query.list();
            tx.commit();
        } catch (HibernateException e) {
            tx.rollback();
            System.out.println("Erro no ElementosExcluidosFacade.findById: " + e.getMessage() + " - Causa: " + e.getCause());
            throw new HibernateException(e);
        }
        return elemento;
    }

    public ElementosExcluidos findByElemento(String elemento) {
        //Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tx = session.beginTransaction();
        ElementosExcluidos element = null;
        try {
            Query query = session.getNamedQuery("ElementosExcluidos.findByElemento").setParameter("elemento", elemento);
            element = (ElementosExcluidos) query.list();
            tx.commit();
        } catch (HibernateException e) {
            tx.rollback();
            System.out.println("Erro no ElementosExcluidosFacade.findByElemento: " + e.getMessage() + " - Causa: " + e.getCause());
            throw new HibernateException(e);
        }
        return element;
    }

    public ElementosExcluidos findByQuantidade(Long quant) {
        //Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tx = session.beginTransaction();
        ElementosExcluidos elemento = null;
        try {
            Query query = session.getNamedQuery("ElementosExcluidos.findByQuantidade").setParameter("quantidade", quant);
            elemento = (ElementosExcluidos) query.list();
            tx.commit();
        } catch (HibernateException e) {
            tx.rollback();
            System.out.println("Erro no ElementosExcluidosFacade.findByQuantidade: " + e.getMessage() + " - Causa: " + e.getCause());
            throw new HibernateException(e);
        }
        return elemento;
    }

    public List<ElementosExcluidos> findByData(Date data) {
        //Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tx = session.beginTransaction();
        List<ElementosExcluidos> elemento = null;
        try {
            Query query = session.getNamedQuery("ElementosExcluidos.findByData").setParameter("data", data);
            elemento = (List<ElementosExcluidos>) query.list();
            tx.commit();
        } catch (HibernateException e) {
            tx.rollback();
            System.out.println("Erro no ElementosExcluidosDao.findByData: " + e.getMessage() + " - Causa: " + e.getCause());
            throw new HibernateException(e);
        }
        return elemento;
    }

    public ElementosExcluidos insert(ElementosExcluidos elemento) {
        try {
            saveOrUpdate(this.session, elemento);
        } catch (Exception ex) {
            Logger.getLogger(ElementosExcluidosDao.class.getName()).log(Level.SEVERE, null, ex);
        }
        return elemento;
    }

    public ElementosExcluidos update(ElementosExcluidos elemento) {
        try {
            saveOrUpdate(this.session, elemento);
        } catch (Exception ex) {
            Logger.getLogger(ElementosExcluidosDao.class.getName()).log(Level.SEVERE, null, ex);
        }
        return elemento;
    }

    public void delete(ElementosExcluidos elemento) {
        try {
            remove(this.session, elemento);
        } catch (Exception ex) {
            Logger.getLogger(ElementosExcluidosDao.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
